Identifies a belongs-to
relationship in an Ember Data Model or Ember.Object.
This is used to create a link to the validations object of the child model.
Note: Validations must exist on both models/objects
Ember Model
// model/users.js
const Validations = buildValidations({
details: validator('belongs-to')
});
export default DS.Model.extend(Validations, {
'details': DS.belongsTo('user-detail')
});
// model/user-details.js
const Validations = buildValidations({
firstName: validator('presence', true),
lastName: validator('presence', true)
});
export default DS.Model.extend(Validations, {
"firstName": attr('string'),
"lastName": attr('string'),
});
Ember Object
// model/users.js
import UserDetails from '../user-details';
const Validations = buildValidations({
details: validator('belongs-to')
});
export default Ember.Object.extend(Validations, {
details: null,
init() {
this._super(...arguments);
let owner = Ember.getOwner(this);
this.set('details', UserDetails.create(owner.ownerInjection()));
}
});
From our user
model, we can now check any validation property on the user-details
model.
get(model, 'validations.attrs.details.isValid')
get(model, 'validations.attrs.details.messages')
-
options
-
defaultOptions
-
globalOptions
Build options hook. Merges default options into options object. This method gets called on init and is the ideal place to normalize your options. The presence validator is a good example to checkout
Returns:
-
type
-
value
-
options
Used by all pre-defined validators to build an error message that is present
in validators/message
or declared in your i18n solution.
If we extended our default messages to include uniqueUsername: '{username} already exists'
,
we can use this method to generate our error message.
validate(value, options) {
var exists = false;
get(options, 'description') = 'Username';
get(options, 'username') = value;
// check with server if username exists...
if(exists) {
return this.createErrorMessage('uniqueUsername', value, options);
}
return true;
}
If we input johndoe
and that username already exists, the returned message would be 'johndoe already exists'
.
Parameters:
Returns:
The generated message
Wrapper method to value
that passes the necessary parameters
Returns:
value
-
value
-
options
-
model
-
attribute
The validate method is where all of your logic should go. It will get passed in the current value of the attribute this validator is attached to. Within the validator object, you will have access to the following properties:
Parameters:
Returns:
One of the following types:
Boolean
:true
if the current value passed the validationString
: The error messagePromise
: A promise that will either resolve or reject, and will finally return eithertrue
or the final error message string.